/**
 * @file PasteSurfaceCommand.hpp
 *
 * @date 26/12/2011
 * @author Tales 
 *
 */

#ifndef _MODEL_PASTESURFACECOMMAND_HPP_
#define _MODEL_PASTESURFACECOMMAND_HPP_
#include <utility>
#include <SDL.h>
#include "../common/Color.hpp"
#include "Command.hpp"

namespace yep
{
using namespace std;

/**
 * @brief Um comando de colar uma imagem
 */
class PasteSurfaceCommand: public Command
{
public:
	/**
	 * @brief Cria um novo comando.
	 * @param src a imagem a ser colada. O comando reivindica a posse da src e se responsabiliza por liberá-la
	 * @param pos a posição onde colar
	 * @param color a cor
	 * @param layer o layer
	 */
	PasteSurfaceCommand(SDL_Surface *src, const pair<int, int> &pos, const Color &color, int layer);
	~PasteSurfaceCommand();
	void execute(PictureState &state);
private:
	SDL_Surface *src;
	pair<int, int> position;
};

} /* namespace yep */
#endif /* _MODEL_PASTESURFACECOMMAND_HPP_ */
